Plug leaks in quartz implementation of gtk_drag_begin_idle()
authorKristian Rietveld <kris@gtk.org>
Fri, 1 Jan 2010 19:54:27 +0000 (20:54 +0100)
committerKristian Rietveld <kris@gtk.org>
Fri, 1 Jan 2010 20:28:16 +0000 (21:28 +0100)
gtk/gtkdnd-quartz.c

index dfce31ba4ce47274c69563dcb3d0777fc0c72472..e00ef203cd7f625e39d6f2a28051b0795bfde09f 100644 (file)
@@ -1073,6 +1073,7 @@ gtk_drag_begin_idle (gpointer arg)
   GtkDragSourceOwner *owner;
   NSPoint point;
   NSSet *types;
+  NSImage *drag_image;
 
   g_assert (info != NULL);
 
@@ -1083,6 +1084,7 @@ gtk_drag_begin_idle (gpointer arg)
 
   [pasteboard declareTypes:[types allObjects] owner:owner];
 
+  [owner release];
   [types release];
 
   if ((nswindow = get_toplevel_nswindow (info->source_widget)) == NULL)
@@ -1094,7 +1096,9 @@ gtk_drag_begin_idle (gpointer arg)
   /* FIXME: If the event isn't a mouse event, use the global cursor position instead */
   point = [info->nsevent locationInWindow];
 
-  [nswindow dragImage:_gtk_quartz_create_image_from_pixbuf (info->icon_pixbuf)
+  drag_image = _gtk_quartz_create_image_from_pixbuf (info->icon_pixbuf);
+
+  [nswindow dragImage:drag_image
                    at:point
                offset:NSMakeSize(0, 0)
                 event:info->nsevent
@@ -1103,6 +1107,7 @@ gtk_drag_begin_idle (gpointer arg)
             slideBack:YES];
 
   [info->nsevent release];
+  [drag_image release];
 
   [pool release];